﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Diagram
{
    [Serializable]
    public class Operacja : Element
    {        
        public Operacja(ModelUML.OperacjaUML operacja)
        {
            element = operacja;
        }
        public Operacja(String nazwa, String nazwaTypu)
        {
            ModelUML.TypDanychUML typ = null;
            foreach (ModelUML.ElementUML el in ModelDiagramu.model.Elementy)
            {
                if (el.JestTypemDanych)
                {
                    if (((ModelUML.TypDanychUML)el).Nazwa.Equals(nazwaTypu))
                    {
                        typ = (ModelUML.TypDanychUML)el;
                        break;
                    }
                }
            }
            if (typ == null)
            {
                typ = ModelDiagramu.Model.DodajPrymityw(nazwaTypu);
            }

            ModelUML.OperacjaUML operacja = new ModelUML.OperacjaUML(nazwa, typ);
            element = operacja;
        }
        
        public TypDanych Typ
        {
            get
            {
                return new TypDanych(((ModelUML.OperacjaUML)element).Typ);
            }
            set
            {
                ((ModelUML.OperacjaUML)element).Typ = (ModelUML.TypDanychUML)value.element;
            }
        }
        public void DodajAtrybut(Atrybut atrybut)
        {
            ((ModelUML.OperacjaUML)element).DodajAtrybut((ModelUML.AtrybutUML)atrybut.element);                        
        }

        public void UsunAtrybuty()
        {
            ((ModelUML.OperacjaUML)element).UsunAtrybuty();
        }

        public int IloscAtrybutow
        {
            get
            {
                return ((ModelUML.OperacjaUML)element).IloscAtrybutow;
            }
        }
        public Atrybut GetAtrybut(int index)
        {
            Atrybut atr = new Atrybut(((ModelUML.OperacjaUML)element).GetAtrybut(index));
            return atr;
        }
        public bool CzyZwracaWynik
        {
            get
            {
                return ((ModelUML.OperacjaUML)element).CzyZwracaWynik;
            }
        }
    }
}
